/**
 * JSparrow - Une version numérique du jeu "Attention Pirates !" - Copyright (C) 2014 Black Pearl
 *
 * This program is free software: you can redistribute it and/or modify it under the terms of the
 * GNU General Public License as published by the Free Software Foundation, either version 3 of the
 * License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
 * even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License along with this program. If
 * not, see <http://www.gnu.org/licenses/>.
 */
package App.Vue;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.GraphicsEnvironment;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Image;
import java.awt.Insets;
import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.List;

import javax.imageio.ImageIO;
import javax.swing.JComponent;
import javax.swing.JLabel;


public class Panneau_Informations extends JPanel_Principal{

	private JLabel scores;
	private JLabel courant;
	private List<String[]> infoJoueurs;
	private Image parchemin;
	private boolean flagInit = true;

	/**
	 * Créer un nouveau Panneau d'informations
	 * @param infos Contient les infos par joueurs, tableau de 3 strings :[0]nom [1]nbTresor au Port [2]nbTresor bateau
	 */
	public Panneau_Informations(List<String[]> infos){

		//Panneau transparent
		this.setBackground(TRANSPARENT);
		this.setOpaque(false);
		//Règle la taille du panel
		Rectangle screenBounds = GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds();
		int SCRX =(int)(screenBounds.width*0.18); 
		int SCRY = (int)(screenBounds.height*0.60);
		this.setPreferredSize(new Dimension(SCRX,SCRY));
		this.infoJoueurs = infos;
		
		//Initialisation des labels
		courant = new JLabel("");
		scores = new JLabel("");
		courant.setBackground(TRANSPARENT);
		scores.setBackground(TRANSPARENT);
		courant.setOpaque(false);
		scores.setOpaque(false);
		scores.setForeground(Color.BLACK);
		courant.setFont(texteFont);
		scores.setFont(texteFont);

		
		scores.setText(infoToString());
		
		this.setLayout(new GridBagLayout());
		this.addItem(courant,0,0);
		this.addItem(scores,0,1);
	}

	/**
	 * Ajoute un composant à la gridBagLayout
	 * @param c Element à ajouter
	 * @param x colonne de la grille
	 * @param y ligne de la grille
	 */
	private void addItem(JComponent c, int x, int y) {
		GridBagConstraints gc = new GridBagConstraints();
		gc.gridx = x;
		gc.gridy = y;
		gc.gridwidth = 1;
		gc.gridheight = 1;
		gc.weightx = 1;
		gc.weighty = 1;
		gc.insets = new Insets(2,2,2,2);
		gc.anchor = GridBagConstraints.CENTER;
		gc.fill = GridBagConstraints.HORIZONTAL;
		this.add(c, gc);
	}
	
	
	
	/**
	 * Transforme la liste en string à afficher
	 * @return string formatée
	 */
	private String infoToString(){
		String texte = new String("");
		for (String[] joueur : infoJoueurs) {
			courant.setText("Joueur courant : "+infoJoueurs.get(0)[0]);
			texte = texte + "<html>Coffre(s) de "+joueur[0]+" :<br>Port : "+joueur[1]+" - Bateau : "+joueur[2]+ "<br><br><html>";
		}
		return texte;
	}

	/**
	 * Met à jour les scores
	 * @param infos Contient les infos par joueurs, tableau de 3 strings :[0]nom [1]nbTresor au Port [2]nbTresor bateau
	 */
	public void updateScores(List<String[]> infos){
		
		/*String[] infoPremierJoueur = infos.get(0);
		System.out.println(infoPremierJoueur[0]);
		courant.setText("Joueur courant : "+infoPremierJoueur[0]); */
		this.infoJoueurs = infos;
		scores.setText(infoToString());
	}
	
	/**
	 * Peint l'arrière plan
	 */
	public void paintComponent(Graphics g){
		super.paintComponent(g);
		if(flagInit){
			try {
				BufferedImage bufferedFond = ImageIO.read(this.getClass().getClassLoader().getResourceAsStream("img/parcheminV.png"));
				parchemin = bufferedFond.getScaledInstance(getWidth(),getHeight(), 0);

			} catch (IOException e) {
				e.printStackTrace();
			}
			flagInit = false;
		}
		g.drawImage(parchemin, 0, 0, this);
	}
}
